[GCP] Google Cloud Deployment ManagerでCompute Engineをデプロイしてみた
Google Cloud Deployment Managerは、GCP(Google Cloud Platform)のリソースをYAML形式で定義してデプロイするサービスです。また、PythonやJinja2テンプレートでは、デプロイするリソースをコードで定義するため、効率よくリソースを作成することができます。AWSのCloudFormationに近いサービスだと思います。
まずは、GCPが提供している仮想マシン「Compute Engine」のデプロイをやってみます。
事前準備
Cloud Deployment Managerでリソースをデプロイする際にgcloudコマンドを使用します。gcloud CLIはCloud SDKをインストールすることで利用できるようになります。Cloud SDKの導入方法は次のブログが参考になりました。
環境
項目 | 内容 |
---|---|
OS | macOS Catalina 10.15.4(19E287) |
Python | 3.7.0 |
Cloud SDK | 280.0.0 |
構成ファイル作成
構成ファイルにYAML構文でリソースを定義します。PROJECT_ID
は個人のものに差し替えてください。
resources: - type: compute.v1.instance name: sample-vm properties: zone: asia-northeast1-a machineType: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/zones/asia-northeast1-a/machineTypes/f1-micro disks: - deviceName: boot type: PERSISTENT boot: true autoDelete: true initializeParams: sourceImage: https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/family/debian-9 networkInterfaces: - network: https://www.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/networks/default accessConfigs: - name: External NAT type: ONE_TO_ONE_NAT
構成ファイル内容
構成ファイルの内容は次の通りです。ファイル名はsample-vm.yaml
で保存します。
項目 | 内容 |
---|---|
インスタンス名 | sample-vm |
ゾーン | asia-northeast1-a |
マシンタイプ | f1-micro |
イメージ | debian-9 |
ディスク | boot |
デプロイ
デプロイ先のプロジェクトをgcloud
コマンドで指定します。
gcloud config set project [PROJECT_ID]
作成した構成ファイルを使用してgcloud
コマンドでデプロイします。
gcloud deployment-manager deployments create sample-vm --config sample-vm.yaml
デプロイが完了すると次のようなログが出力されます。
The fingerprint of the deployment is yM2m-nceRKj8zLLH-eacew== Waiting for create [operation-1588154549158-5a46b0bc043ce-3220d939-9c3a584c]...done. Create operation operation-1588154549158-5a46b0bc043ce-3220d939-9c3a584c completed successfully. NAME TYPE STATE ERRORS INTENT sample-vm compute.v1.instance COMPLETED []
GCPのコンソールでもインスタンスが作成されていることを確認できました。
後片付け
作成したリソースに対しては課金が発生するため、忘れずに削除します。
gcloud deployment-manager deployments delete sample-vm
まとめ
今回は手始めにCompute Engineのデプロイをやってみました。次はCloud Functionsなど他のサービスのデプロイを紹介しようと考えています。また、その際にはPythonテンプレートの活用も出来ればよいと思います。